import numpy as np
import matplotlib.pyplot as plt
import scienceplots  # 导入scienceplots以使用SCI风格

# 使用SCI风格且不启用LaTeX
plt.style.use(['science', 'no-latex'])

# 数据准备
t = np.linspace(0, 360, 1000)  # t范围0-360（可表示天数）

# 计算函数各部分（注意角度转弧度）
term1 = 20 * np.sin((2 * np.pi * t / 360) - np.radians(110))  # 含110°的项
term2 = 4 * np.sin(2 * np.pi * t - (3 * np.pi / 4))  # 含3π/4的项
y = 20 + term1 + term2  # 复合函数

# 创建图形
fig, ax = plt.subplots(figsize=(20, 5), dpi=300)

# 绘制曲线
ax.plot(t, y, label='y=20+20 sin(2 pi t/360 - 110 d)+4 sin( 2 pi t-3 pi/4)')

# 设置标签和标题
ax.set_xlabel('Time (Day)', fontsize=12)
ax.set_ylabel('Value', fontsize=12)
ax.set_title('Composite Sine Function Variation', fontsize=14, pad=10)

# 设置坐标轴范围和刻度
ax.set_xlim(0, 360)
ax.set_ylim(0, 45)  # 根据函数波动范围调整，更贴合实际展示
ax.set_xticks(np.arange(0, 361, 60))  # 每60天一个刻度
ax.set_yticks(np.arange(0, 46, 10))   # y轴每10单位一个刻度

# 添加副坐标轴显示月份（与第一个图保持一致）
ax2 = ax.twiny()
ax2.set_xlim(ax.get_xlim())
month_positions = np.arange(1, 361, 30)  # 每月30天
month_labels = [str(i) for i in range(1, 13)]  # 1-12月
ax2.set_xticks(month_positions)
ax2.set_xticklabels(month_labels)
ax2.set_xlabel('Month', fontsize=12)

# 添加图例和网格
ax.legend(frameon=True)
ax.grid(alpha=0.5, linestyle='--')

# 紧凑布局并保存
plt.tight_layout()
plt.savefig('p3.png', dpi=300)
plt.show()
    